SlideShare a Scribd company logo
1 of 103
Advanced API Design
                       How an awesome API can
                                attract friends,
                                make you rich,
                          and change the world

                                           Jon Dahl
                                           @jondahl
                                   jon@zencoder.com




Monday, May 23, 2011
Application
       Programming
       Interface



Monday, May 23, 2011
User
       Interface



Monday, May 23, 2011
Interface



Monday, May 23, 2011
Library
       SDK



Monday, May 23, 2011
Net::SSH



Monday, May 23, 2011
Web Service



Monday, May 23, 2011
Simple
       Object
       Access
       Protocol



Monday, May 23, 2011
Simple
       Object
       Access
       Protocol



Monday, May 23, 2011
REST



Monday, May 23, 2011
HTTP



Monday, May 23, 2011
Web is an API



Monday, May 23, 2011
GET /records



Monday, May 23, 2011
POST /record/new



Monday, May 23, 2011
POST /record/new
         <xml>
          <data>Foo</data>
         </xml>



Monday, May 23, 2011
POST /record/new
         {
             "data" : "foo"
         }



Monday, May 23, 2011
Monday, May 23, 2011
(Don’t tell our investors that
         we don’t have a real product)




Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
1. Secondary
       Flickr
       Twitter
       Linkedin
       Facebook




Monday, May 23, 2011
2. Infrastructure
       Amazon Web Services

       EC2
       S3
       SQS
       RDS
       SNS
       SES



Monday, May 23, 2011
3. Technology
       Twilio
       SimpleGeo
       Sendgrid
       Zencoder
       Factual
       Spreedly
       Recurly
       Saplo
       Tropo
       CloudMailin
       UploadJuicer
Monday, May 23, 2011
4. Science Fiction
       PiCloud
       Crowdflower
       Amazon Mechanical Turk




Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
so, how do you design a good API?




Monday, May 23, 2011
Version it




Monday, May 23, 2011
GET /api/records/38927

                       {
                           "color" : "green",
                           "velocity" : 1000000
                       }




Monday, May 23, 2011
GET /api/records/38927

                       {
                           "color" : "10EE33",
                           "velocity" : 1000000
                       }




Monday, May 23, 2011
GET /api/v1/records/38927

                       {
                           "color" : "green",
                           "velocity" : 1000000
                       }




Monday, May 23, 2011
GET /api/v2/records/38927

                       {
                           "color" : "10EE33",
                           "velocity" : 1000000
                       }




Monday, May 23, 2011
REST conventions




Monday, May 23, 2011
GET      records
               POST     jobs
               PUT      messages
               DELETE   servers
                        users




Monday, May 23, 2011
HTTP codes




Monday, May 23, 2011
200 OK
                       201 Created
                       202 Accepted

                       400 Bad Request
                       401 Unauthorized
                       402 Payment Required
                       404 Not Found
                       409 Conflict
                       418 I’m a teapot
                       422 Unprocessable Entity

                       500 Internal Server Error
                       503 Service Unavailable
Monday, May 23, 2011
... and many more!




Monday, May 23, 2011
Smart validations




Monday, May 23, 2011
POST /api/jobs HTTP/1.1
                       Accept: application/json
                       Content-Type: application/json

                       {
                           "api_key" : "Not A Real Key"
                       }




Monday, May 23, 2011
HTTP/1.1 500 Internal Server Error




Monday, May 23, 2011
HTTP/1.1 401 Unauthorized




Monday, May 23, 2011
HTTP/1.1 401 Unauthorized

                       {
                           "errors": [
                             "api_key not found"
                           ]
                       }




Monday, May 23, 2011
HTTP/1.1 401 Unauthorized

                       {
                           "errors": [
                             "api_key not found.",
                             "api_key may not include spaces."
                           ]
                       }




Monday, May 23, 2011
HTTP/1.1 401 Unauthorized

                       {
                         "errors": [
                           "api_key not found. Please log in to https://
                       example.com/account/api to retrieve your API
                       key.",
                           "api_key may not include spaces."
                         ]
                       }



Monday, May 23, 2011
POST /api/user HTTP/1.1
                       Accept: application/json
                       Content-Type: application/json

                       {
                           "api_key" : "A23B92F281CC"
                           "strength" : 18
                       }




Monday, May 23, 2011
HTTP/1.1 400 Bad Request




Monday, May 23, 2011
HTTP/1.1 400 Bad Request

                       {
                         "errors": [
                           "JSON is not valid. Syntax error,
                       unexpected TSTRING, expecting '}'
                       at line 2"
                         ]
                       }




Monday, May 23, 2011
JSON + XML




Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
POST /api/user HTTP/1.1
                       Accept: application/json
                       Content-Type: application/json

                       {
                           "api_key" : "A23B92F281CC"
                           "strength" : 18
                       }




Monday, May 23, 2011
params[:strength] # 18




Monday, May 23, 2011
respond_to do |wants|
                 wants.json { render :json => @jobs.to_json }
                 wants.xml { render :xml => @jobs.to_xml }
               end




Monday, May 23, 2011
Document it




Monday, May 23, 2011
Zencoder::API.define_setting :audio_channels, :section => section
do |z|
  z.tip = "The number of audio channels: 1 or 2."
  z.description = %Q{
    <p>The number of audio channels to use: 1 (mono) or 2
(stereo).</p>
    <p>Note that mono AAC audio sometimes erroneously self-reports
as stereo when inspected. We recommend using iTunes to get the true
number of channels for AAC audio.</p>
    }
  z.data_type = "Integer"
  z.valid = "1 or 2"
  z.default = "1 if the original file is mono; otherwise, 2."
  z.example = "1"
  z.see_also = [:audio_bitrate, :audio_quality]
end




Monday, May 23, 2011
Monday, May 23, 2011
Libraries




Monday, May 23, 2011
Support it




Monday, May 23, 2011
APIs are scary.



Monday, May 23, 2011
Make it fast




Monday, May 23, 2011
Rate limiting




Monday, May 23, 2011
Log requests




Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Request builder




Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
GET /api/ideas




Monday, May 23, 2011
1. Make friends



Monday, May 23, 2011
Monday, May 23, 2011
Awesomeness is noticed




Monday, May 23, 2011
(Assymetrical reward curve)




Monday, May 23, 2011
value
                       quality




Monday, May 23, 2011
value
                       quality




Monday, May 23, 2011
value
                       quality




Monday, May 23, 2011
Bus Driving




                                     value
                          quality




Monday, May 23, 2011
Bus Driving




                                     value
                          quality




Monday, May 23, 2011
Monday, May 23, 2011
Sports




                                 value
                       quality




Monday, May 23, 2011
API design




                                    value
                         quality




Monday, May 23, 2011
"I know the following statement is going to sound dramatic,
but it's the truth. Zencoder seriously uplifted my entire day.

The API is really well designed and has documentation for not
only what each value should be but also what an example
input/output would look like using the value. I had spent the
earlier part of the day working with a web service that is the
complete opposite of those things.

So when I started digging into Zencoder I felt like I was
witnessing a double rainbow. Then when I found the API
Builder, it went beyond a double rainbow to a level I can only
imagine is equal to witnessing a unicorn birth.”

Monday, May 23, 2011
2. Get rich



Monday, May 23, 2011
Cloud computing revenue forecast

                       $150B
                                                     $148.8B




                       $100B


                                      $68.3B
                       $50B




                        $0B
                                       2010           2014

                         Source: Gartner 2010




Monday, May 23, 2011
4.
       Twilio
       SimpleGeo
       Sendgrid
       Zencoder
       Factual
       Spreedly
       Recurly
       Saplo
       Tropo
       CloudMailin
       UploadJuicer
Monday, May 23, 2011
API to




Monday, May 23, 2011
API to
       Ruby



Monday, May 23, 2011
API to
       the government



Monday, May 23, 2011
API to
       manufacturing



Monday, May 23, 2011
3. Change the world



Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
Monday, May 23, 2011
POST /api/awesome_things HTTP/1.1

                       {
                           "team_size" : 3,
                           "productivity" : "10x"
                       }




Monday, May 23, 2011
Thanks!


                                         Jon Dahl
                                         @jondahl
                                 jon@zencoder.com




Monday, May 23, 2011

More Related Content

Similar to Advanced API Design: how an awesome API can attract friends, make you rich, and change the world

AppScale Talk at SBonRails
AppScale Talk at SBonRailsAppScale Talk at SBonRails
AppScale Talk at SBonRailsChris Bunch
 
Mwrc2011 cookbook design patterns
Mwrc2011 cookbook design patternsMwrc2011 cookbook design patterns
Mwrc2011 cookbook design patternsjtimberman
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyEmanuele Di Saverio
 
Fosdem chef-101-app-deploy
Fosdem chef-101-app-deployFosdem chef-101-app-deploy
Fosdem chef-101-app-deployjtimberman
 
international PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPinternational PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPsmueller_sandsmedia
 
Community Code: The TouchForums App
Community Code: The TouchForums AppCommunity Code: The TouchForums App
Community Code: The TouchForums AppSencha
 
Javascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSJavascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSSylvain Zimmer
 
Visualizations of Spatial and Social Data
Visualizations of Spatial and Social DataVisualizations of Spatial and Social Data
Visualizations of Spatial and Social Datainterface2011
 
Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Jeff Linwood
 
Consuming the Twitter Streaming API with Ruby and MongoDB
Consuming the Twitter Streaming API with Ruby and MongoDBConsuming the Twitter Streaming API with Ruby and MongoDB
Consuming the Twitter Streaming API with Ruby and MongoDBJeff Linwood
 

Similar to Advanced API Design: how an awesome API can attract friends, make you rich, and change the world (14)

Securing Your API
Securing Your APISecuring Your API
Securing Your API
 
Efficient Proxies in Smalltalk
Efficient Proxies in SmalltalkEfficient Proxies in Smalltalk
Efficient Proxies in Smalltalk
 
AppScale Talk at SBonRails
AppScale Talk at SBonRailsAppScale Talk at SBonRails
AppScale Talk at SBonRails
 
Mwrc2011 cookbook design patterns
Mwrc2011 cookbook design patternsMwrc2011 cookbook design patterns
Mwrc2011 cookbook design patterns
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journey
 
Fosdem chef-101-app-deploy
Fosdem chef-101-app-deployFosdem chef-101-app-deploy
Fosdem chef-101-app-deploy
 
Groke
GrokeGroke
Groke
 
international PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPinternational PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHP
 
Community Code: The TouchForums App
Community Code: The TouchForums AppCommunity Code: The TouchForums App
Community Code: The TouchForums App
 
Javascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSJavascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJS
 
Visualizations of Spatial and Social Data
Visualizations of Spatial and Social DataVisualizations of Spatial and Social Data
Visualizations of Spatial and Social Data
 
High Availability Server Apps
High Availability Server AppsHigh Availability Server Apps
High Availability Server Apps
 
Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2
 
Consuming the Twitter Streaming API with Ruby and MongoDB
Consuming the Twitter Streaming API with Ruby and MongoDBConsuming the Twitter Streaming API with Ruby and MongoDB
Consuming the Twitter Streaming API with Ruby and MongoDB
 

More from Jonathan Dahl

The impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityThe impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityJonathan Dahl
 
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelDesigning Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelJonathan Dahl
 
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Jonathan Dahl
 
Programming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashProgramming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashJonathan Dahl
 
Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Jonathan Dahl
 
Rails and alternative ORMs
Rails and alternative ORMsRails and alternative ORMs
Rails and alternative ORMsJonathan Dahl
 
Aristotle and the Art of Software Development
Aristotle and the Art of Software DevelopmentAristotle and the Art of Software Development
Aristotle and the Art of Software DevelopmentJonathan Dahl
 
EC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingEC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingJonathan Dahl
 
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Jonathan Dahl
 

More from Jonathan Dahl (9)

The impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video qualityThe impact of encoding on content delivery: four ways to optimize video quality
The impact of encoding on content delivery: four ways to optimize video quality
 
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano ModelDesigning Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
Designing Great APIs: Learning from Jony Ive, Orwell, and the Kano Model
 
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...
 
Programming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the ClashProgramming and Minimalism: Lessons from Orwell and the Clash
Programming and Minimalism: Lessons from Orwell and the Clash
 
Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)Aristotle and the Art of Software Development (Agile 2009)
Aristotle and the Art of Software Development (Agile 2009)
 
Rails and alternative ORMs
Rails and alternative ORMsRails and alternative ORMs
Rails and alternative ORMs
 
Aristotle and the Art of Software Development
Aristotle and the Art of Software DevelopmentAristotle and the Art of Software Development
Aristotle and the Art of Software Development
 
EC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed ProcessingEC2, MapReduce, and Distributed Processing
EC2, MapReduce, and Distributed Processing
 
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)Asynchronous Processing with Ruby on Rails (RailsConf 2008)
Asynchronous Processing with Ruby on Rails (RailsConf 2008)
 

Recently uploaded

Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

Advanced API Design: how an awesome API can attract friends, make you rich, and change the world